from froModuleDrivers.mCarDriver import MCarDriver  # 引用小车驱动模块
from froModuleDrivers.nioManager import NioManager  # 引用驱动管理模块
import time

# 驱动初始化
mycar_turn = MCarDriver("192.168.50.28", 4001)  # 实例化小车驱动
manager = NioManager(mycar_turn)  # 实例化驱动管理模块，并把小车驱动加入管理
manager.run()  # 系统运行

# 转向点设置有3个API，建议使用setTurnCard()即可

# 使用方法:
# 设置小车在自动模式，注意在自动模式下的小车前进需要使用电工胶布在地面上拉上一条线，再拉一条竖线，模拟出十字路口，
# 然后将高频卡放在十字的中心点，设置小车前进到高频卡的位置向左转

# 设置小车进入自动模式
mycar_turn.setCarAutoMode()

#########################设置转向点API#################################
# 设置小车的转向点，以列表的形式传入参数，第1个参数是左转向，第2个参数是右转向，不需要设置时传入空列表
# 1、设置小车读取到0x00A1和0x00A2小车向左转，读取到0x00A3和0x00A4小车向右转
mycar_turn.setTurnCard([0x0A01, 0x0A02], [0x0A03, 0x0A04])
time.sleep(0.5)

# 2、设置小车前进
mycar_turn.startCar()
time.sleep(10)

# 3、10s后停止
mycar_turn.stopCar()

#########################设置左转向点API#################################
# 注意该操作不会影响右转点,且点位冲突时按左转处理

# 当小车遇到0x00A1或者是0x00A2的高频卡，就会向左转
# 1、设置小车的左转向，要以列表的形式传入参数
mycar_turn.setTurnLeftCard([0x00A1, 0x00A2])
time.sleep(0.5)

# 2、设置小车前进
mycar_turn.startCar()
time.sleep(10)

# 3、10s后停止
mycar_turn.stopCar()

#########################设置右转向点API#################################
# 注意该操作不会影响左转点,且点位冲突时按左转处理

# 当小车遇到0x00A3或者是0x00A4的高频卡，就会向右转
# 1、单独设置小车的右转向，要以列表的形式传入参数
mycar_turn.setTurnRightCard([0x00A3, 0x00A4])
time.sleep(0.5)

# 2、设置小车前进
mycar_turn.startCar()
time.sleep(10)

# 3、10s后停止
mycar_turn.stopCar()

time.sleep(1)
manager.shutdownGracefully()  # 等待指令执行完毕后系统退出